package codetop前三页.第一页;

import java.util.HashMap;
import java.util.HashSet;

/**总结：滑动窗口
 * 注意最关键的一步：left = Math.max(left,map.get(aChar));
 * @author ChenweiLin
 * @create 2022-01-04 11:59
 */
public class No2LongestSubstringWithoutRepeatingCharacters {
    public static void main(String[] args) {

    }

    public int lengthOfLongestSubstring(String s) {
        char[] chars = s.toCharArray();
        int left = 0;//左窗口
        int right = 0;//右窗口
        HashMap<Character, Integer> map = new HashMap<>();
        int count = 0;//记录位置
        int result = 0;//最后的结果
        for (char aChar : chars) {
            count++;
            if (map.containsKey(aChar)){//左窗口更新
                left = Math.max(left,map.get(aChar));
            }
            //存进字符与位置
            map.put(aChar, count);
            //result更新
            result = Math.max(result, right-left+1);
            //右窗口更新
            right=count;
        }

        return result;
    }
}
